package timerservice;
import java.util.HashMap;
import java.util.TimerTask;
import java.util.Timer;
//import com.siwei.util.IDCodeUtil;
/**
 * ��定时任务管理器
 * */
public class TimerTaskManager{
  HashMap hmTimerTask=new HashMap();
  SwTimer timer=null;
  static TimerTaskManager timerTaskManager=new TimerTaskManager();
  public TimerTaskManager(){
       timer=new SwTimer();
  }
  /**
   * �以单例模式返回全局唯一的TimerTaskManager实例
   * */
  public static TimerTaskManager getTimerTaskManager(){
    return timerTaskManager;
  }
  /**
   * �添加定时任务
   * */
  public String addTimerTask(SwTimerTask timerTask){
    String id=timerTask.getTaskCode();
    if(id==null||id.trim().equals("")){
      id=IDCodeUtil.generateUniqueID();
    }
    if(addTimerTask(id,timerTask)){
      return id;
    }
    return null;
  }
  /**
   * 添加定时任务
   * */
  private boolean addTimerTask(String taskCode,SwTimerTask timerTask){
    synchronized(this){
      if(hmTimerTask.containsKey(taskCode.toLowerCase())){
        return false;
      }
      timerTask.setTimerTaskManager(this);
      hmTimerTask.put(taskCode,timerTask);
      timer.schedule(timerTask);
    }
    return true;
  }
  /**
   *删除定时任务
   * */
  public void deleteTimerTaskByCode(String taskCode,boolean cancelTask){
    Object obj=hmTimerTask.get(taskCode);
    if(obj!=null){
      if(cancelTask){
        TimerTask timerTask=(TimerTask)obj;
        timerTask.cancel();
      }
      hmTimerTask.remove(taskCode);
    }
  }
}